package cn.tedu.charging.user.service.impl;

import cn.tedu.charging.user.service.IChargingUserInfoService;
import com.alibaba.nacos.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
@Slf4j
public class IChargingUserInfoServiceImpl implements IChargingUserInfoService {

    String appId = "wx5ef7ec0bf0c27845";

    String appSecret = "1f23b3f96f6e071787dcebd2b2ee7b13";


    @Override
    public Integer wxLogin(String code, String nickName) throws Throwable {
        Integer userId = 0;
        //通过微信的接口地址和appidAppID(小程序ID)和 appSecret AppSecret(小程序密钥)
        String url = "https://api.weixin.qq.com/sns/jscode2session?" +
                "appid=" + appId +
                "&secret=" + appSecret +
                "&js_code=" + code +
                "&grant_type=authorization_code";
        //利用spring原生http请求工具对接口进行请求
        RestTemplate restTemplate = new RestTemplate();
        String jsonData = restTemplate.getForObject(url, String.class);
        log.debug("调用微信地址获取用户信息:{}",jsonData);
        //返回结果
        //{"session_key":"eyYhTlvXQ6L+uTgwRuk6hA==",
        // "openid":"o8qfb6Kor2EIEg-7h4nkquviUMQA"}
        //openid 就是微信来确定唯一用户的

        //这个判断是判断我们的请求是否出错，如果没有出错的话就能够拿到openid
        if (StringUtils.contains(jsonData, "errcode")) {
            //出错了
            log.error("微信登录出错了");
        }
        //取出openid 后去数据库查询
        // 如果数据库不存在 第一次登录，保存 生成用户id 可以用数据库自增，也可以通过别的方式生成雪花也可以 一定要唯一
        //返回生成的用户id
        //存在 不是第一次登录 查询 直接返回userId
        //openid 和我们  用户id 映射

        //String openid = jsonObject.getString("openid");
        return userId;
    }

}
